home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
bbs
/
tdk_v136.zip
/
MAX_UNIT.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-08-14
|
9KB
|
317 lines
{
▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀ ▀▀ ▀▀
▀▀ ▀▀ ▀▀ ▀▀ ▀▀
▀▀ ▀▀ ▀▀▀ ▀▀▀▀▀ The DoorKit!
▀▀ ▀▀ ▀▀ ▀▀ ▀▀
▀▀ ▀▀▀▀▀▀ ▀▀ ▀▀
The BBS Door Development Kit By The People - For The People!
Feel free to modify or optimize this code at will. All I ask is that if
find a better way to do things (and you will), please send me a copy of
your modifications. Thanks in advance!....Larry L. Athey.... }
{$A+,B-,D+,E+,F+,G+,I-,L+,N-,O+,P-,Q-,R-,S-,T-,V+,X+}
UNIT MAX_UNIT;
INTERFACE
PROCEDURE MaxCommand(S : STRING);
{^ Processes and sends MAXscript/MAXcontrol/MAXcolor commands.}
{───────────────────────────────────────────────────────────────────────────}
IMPLEMENTATION
USES _EXIT, TDK_VARS, DOORKIT1, DOORKIT2, DOORKIT3;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetFieldData;
VAR
FText : TEXT;
Loop : BYTE;
Count : BYTE;
Ch : CHAR;
St : STRING;
BEGIN
DVWrite(2,24,14,PadRight('Receiving Field Data',' ',78));
ASSIGN(FText,'FIELDS.'+IntToStr(DoorSys.Node));
REWRITE(FText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 5);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(FText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(FText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('FIELDS.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('FIELDS.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(FText);
IF FSize('FIELDS.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('FIELDS.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetEditorText;
VAR
EText : TEXT;
Ch : CHAR;
St : STRING;
Count : BYTE;
BEGIN
DVWrite(2,24,14,PadRight('Receiving Editor Text',' ',78));
ASSIGN(EText,'EDITOR.'+IntToStr(DoorSys.Node));
REWRITE(EText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 5);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(EText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(EText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('EDITOR.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('EDITOR.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(EText);
IF FSize('EDITOR.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('EDITOR.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetResourceInfo;
VAR
FText : TEXT;
Count : BYTE;
Ch : CHAR;
St : STRING;
BEGIN
DVWrite(2,24,14,PadRight('Receiving Resource Info',' ',78));
ASSIGN(FText,'RES.'+IntToStr(DoorSys.Node));
REWRITE(FText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 15);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(FText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(FText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('RES.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('RES.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(FText);
IF FSize('RES.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('RES.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetUserInfo;
VAR
FText : TEXT;
Count : BYTE;
Ch : CHAR;
St : STRING;
BEGIN
DVWrite(2,24,14,PadRight('Receiving User Info',' ',78));
ASSIGN(FText,'USER.'+IntToStr(DoorSys.Node));
REWRITE(FText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 5);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(FText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(FText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('USER.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('USER.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(FText);
IF FSize('USER.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('USER.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetSystemInfo;
VAR
FText : TEXT;
Count : BYTE;
Ch : CHAR;
St : STRING;
BEGIN
DVWrite(2,24,14,PadRight('Receiving System Info',' ',78));
ASSIGN(FText,'REMOTE.'+IntToStr(DoorSys.Node));
REWRITE(FText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 5);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(FText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(FText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('REMOTE.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('REMOTE.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(FText);
IF FSize('REMOTE.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('REMOTE.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE GetPickInfo;
VAR
FText : TEXT;
Count : BYTE;
Ch : CHAR;
St : STRING;
BEGIN
DVWrite(2,24,14,PadRight('Receiving PickList Info',' ',78));
ASSIGN(FText,'PICKINFO.'+IntToStr(DoorSys.Node));
REWRITE(FText);
St := '';
Count := 0;
Wait(2);
IF NOT DataAvailable THEN REPEAT
INC(Count);
Wait(1);
UNTIL (DataAvailable) OR (Count = 5);
WHILE DataAvailable DO BEGIN
Ch := GetChar;
St := St + Ch;
IF POS(#13#10,St) > 0 THEN BEGIN
St := StripBoth(St,#10);
St := StripBoth(St,#13);
IF POS(#255#255,St) = 0 THEN BEGIN
WRITELN(FText,St);
TimeSlice;
END ELSE BEGIN
CLOSE(FText);
DVWrite(2,24,0,PadRight(' ',' ',78));
IF FSize('PICKINFO.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('PICKINFO.'+IntToStr(DoorSys.Node));
TimeSlice;
EXIT;
END;
St := '';
END;
END;
CLOSE(FText);
IF FSize('PICKINFO.'+IntToStr(DoorSys.Node)) = 0 THEN FErase('PICKINFO.'+IntToStr(DoorSys.Node));
DVWrite(2,24,0,PadRight(' ',' ',78));
END;
{───────────────────────────────────────────────────────────────────────────}
PROCEDURE MaxCommand(S : STRING);
VAR
SS : STRING;
BEGIN
IF Local THEN EXIT;
S := StripBoth(S,' ');
SS := AllCaps(S);
IF POS(#255#125,S) = 1 THEN BEGIN
SendStr(S + #13#10);
TimeSlice;
CASE S[3] OF
#200 : GetUserInfo;
#201 : GetResourceInfo;
#205 : GetSystemInfo;
END;
EXIT;
END;
IF (POS('GET_FIELD_DATA()',SS) > 0) OR (POS(' ~· ',SS) > 0) THEN BEGIN
SendStr(S + #13#10);
TimeSlice;
GetFieldData;
EXIT;
END;
IF (POS('GET_EDITOR_TEXT()',SS) > 0) OR (POS(' ~∙ ',SS) > 0) THEN BEGIN
SendStr(S + #13#10);
TimeSlice;
GetEditorText;
EXIT;
END;
IF (POS('GET_PICK_INFO()',SS) > 0) OR (POS(' ~≈ ',SS) > 0) THEN BEGIN
SendStr(S + #13#10);
TimeSlice;
GetPickInfo;
EXIT;
END;
SendStr(S + #13#10);
END;
{───────────────────────────────────────────────────────────────────────────}
END.